#ifndef _WDS_BULLET_COLLECTION_H_
#define _WDS_BULLET_COLLECTION_H_


#include "wds_bullet.h"
#include "ui/ui_manager.h"


class WDSBullet;
class WDSLifeObject;


class WDSBulletCollection
{

public:
	

	WDSBulletCollection(WDSBullet::BULLET_TYPES Type);

	

	void									Render(const math::Vec2& Offset,float Scale);
	void									RenderDebug(const math::Vec2& Offset,float Scale);
	void									Tick(float dt, float SkillBulletSpeed, const math::Vec2& Offset);

	WDSBullet*								Shoot(
														WDSLifeObject* pShooter,
														const math::Vec2& ShootPos,	
														float Degree,																										
														int SoundSFXIndex
														);


	void									Clear();
	void									DieAll();
	WDSBullet*								Spawn(
													WDSLifeObject*	pShooter,
													const math::Vec2& Pos,
													WDSBullet::STARTPOS StartDir,
													float Degree															
													);

	int										GetCount() const;
	WDSBullet*								GetBulletByIndex(int Index);
	void									ShootToAllDir(const math::Vec2& Pos);
	

protected:

	WDSBullet*								ShootToDegree(WDSLifeObject* pShooter,const math::Vec2& Pos, float Degree);

	void									RomboShoot6(WDSLifeObject* pShooter, const math::Vec2& Pos);
	void									RomboShoot5(WDSLifeObject* pShooter, const math::Vec2& Pos);
	void									RomboShoot4(WDSLifeObject* pShooter, const math::Vec2& Pos);
	
	
	

	WDSBullet::BULLET_TYPES					m_Type;
	WDSBullet::STARTPOS						m_StartingDir;
	
	std::vector<WDSBullet*>					m_Bullets;	

};

#endif